è€éãªãããžã§ã¯ãã§CSS @layerã®åçåªå 床ãšã©ã³ã¿ã€ã åé 眮ã®åãæŽ»çšããŸããããã°ããŒãã«ãªã¢ã¯ã»ã·ããªãã£ãšä¿å®æ§ã®ããã«ã¹ã¿ã€ã«ã·ãŒãã管çã»æé©åããæ¹æ³ãåŠã³ãŸãã
CSS @layerã®åçåªå 床ããã¹ã¿ãŒããïŒã¹ã±ãŒã©ãã«ãªã¹ã¿ã€ãªã³ã°ã®ããã®ã©ã³ã¿ã€ã ã¬ã€ã€ãŒåé 眮
çµ¶ãéãªãé²åããããã³ããšã³ãéçºã®ç¶æ³ã«ãããŠãè€éãªã¹ã¿ã€ã«ã·ãŒãã管çã»ä¿å®ããèœåã¯éåžžã«éèŠã§ãããããžã§ã¯ãã®èŠæš¡ãšç¯å²ãæ¡å€§ããã«ã€ããŠãCSSã®ã«ã¹ã±ãŒãã®æ§è³ªã¯å€§ããªé害ãšãªããäºæž¬äžå¯èœãªçµæãç¹ç°æ§æŠäºã®æ¿åããããŠæçµçã«ã¯éçºãµã€ã¯ã«ã®é å»¶ã«ã€ãªããå¯èœæ§ããããŸããCSS @layerã¯ãCSS仿§ã®æ¯èŒçæ°ããæ©èœã§ããããããã®èª²é¡ã«å¯Ÿãã匷åãªãœãªã¥ãŒã·ã§ã³ãæäŸããŸããããã«ããã®åçãªæ©èœãç¹ã«ã©ã³ã¿ã€ã ã¬ã€ã€ãŒã®åé 眮ã¯ãã¹ã¿ã€ã«ã®åªå 床ã管çããäžã§æ¯é¡ã®ãªãæè»æ§ãæäŸããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãCSS @layerã®å©ç¹ãå®è£ æŠç¥ããããŠåçåªå 床ãšã©ã³ã¿ã€ã ã¬ã€ã€ãŒåé 眮ã®é«åºŠãªãã¯ããã¯ãæ¢ããªããããã®è€éãã«æ·±ãè¿«ããŸãã
CSSã«ã¹ã±ãŒããšãã®èª²é¡ãçè§£ãã
@layerã«ã€ããŠæ·±ãæãäžããåã«ãCSSã«ã¹ã±ãŒãã®åºæ¬çãªååãçè§£ããããšãéèŠã§ããã«ã¹ã±ãŒãã¯ãCSSã«ãŒã«ãHTMLèŠçŽ ã«ã©ã®ããã«é©çšãããããæ±ºå®ããŸããããã«ã¯ã次ã®ãããªäžé£ã®ã«ãŒã«ããããŸãã
- ãªãªãžã³ïŒç°ãªããœãŒã¹ïŒãŠãŒã¶ãŒãšãŒãžã§ã³ãããŠãŒã¶ãŒå®çŸ©ã¹ã¿ã€ã«ãäœæè å®çŸ©ã¹ã¿ã€ã«ãªã©ïŒããã®ã¹ã¿ã€ã«ã«ã¯ãç°ãªãéèŠåºŠããããŸããäœæè å®çŸ©ã¹ã¿ã€ã«ã¯éåžžããŠãŒã¶ãŒãšãŒãžã§ã³ãã¹ã¿ã€ã«ãããåªå ãããŸãã
- éèŠåºŠïŒ`!important`ãæã€ã«ãŒã«ã¯é«ãåªå 床ãäžããããŸãïŒãã ããæ§ããã«äœ¿çšãã¹ãã§ãïŒã
- ç¹ç°æ§ïŒããç¹ç°ãªã»ã¬ã¯ã¿ãŒïŒ`id`ã»ã¬ã¯ã¿ãŒãªã©ïŒãæã€ã«ãŒã«ã¯ãç¹ç°æ§ã®äœãã»ã¬ã¯ã¿ãŒïŒ`class`ã»ã¬ã¯ã¿ãŒãªã©ïŒãããåªå ãããŸãã
- åºçŸé åºïŒã¹ã¿ã€ã«ã·ãŒãã®åŸã®æ¹ã§å®çŸ©ãããã«ãŒã«ã¯ãéåžžãåã®ã«ãŒã«ãäžæžãããŸãã
ã«ã¹ã±ãŒãã¯ã¹ã¿ã€ã«ãé©çšããããã®å ç¢ãªã·ã¹ãã ãæäŸããŸããããããžã§ã¯ããå€§èŠæš¡ã«ãªãã«ã€ããŠèª²é¡ãçããå¯èœæ§ããããŸãã
- ç¹ç°æ§æŠäºïŒéçºè ã¯ãæ¢åã®ã¹ã¿ã€ã«ãäžæžãããããã«ãé床ã«ç¹ç°ãªã»ã¬ã¯ã¿ãŒïŒæ·±ããã¹ããããã»ã¬ã¯ã¿ãŒã`!important`ãªã©ïŒã«é Œãããšãå€ããã³ãŒãããŒã¹ã®ä¿å®ãå°é£ã«ããŸãã
- äºæž¬äžå¯èœæ§ïŒãªãªãžã³ãéèŠåºŠãç¹ç°æ§ã®çžäºäœçšã«ãããç¹ã«å€§èŠæš¡ãªãããžã§ã¯ãã§ã¯ãã©ã®ã¹ã¿ã€ã«ãé©çšãããããäºæž¬ããããšãå°é£ã«ãªãå ŽåããããŸãã
- ä¿å®ã®æ©ã¿ïŒæ¢åã®ã¹ã¿ã€ã«ã倿Žãããšã倿Žãæå³ããã¢ããªã±ãŒã·ã§ã³ã®ä»ã®éšåã«åœ±é¿ãäžããå¯èœæ§ãããããããªã¹ã¯ã䌎ãå ŽåããããŸãã
CSS @layerã®å°å ¥ïŒã¹ã¿ã€ã«ã·ãŒã管çã®å€é©
CSS @layerã¯ãCSSã«ãŒã«ãæç¢ºãªã¬ã€ã€ãŒã«ã°ã«ãŒãåããŠæŽçããæ¹æ³ãæäŸããŸãããããã®ã¬ã€ã€ãŒã¯ãå®çŸ©ãããé åºã«åŸã£ãŠåŠçãããããå¶åŸ¡ãããäºæž¬å¯èœãªã«ã¹ã±ãŒããæäŸããŸãããã®ã¢ãããŒãã«ãããè€éãªã¹ã¿ã€ã«ã·ãŒãã®ç®¡çãç°¡çŽ åãããç¹ç°æ§ã®ç«¶åãçºçããå¯èœæ§ãäœæžãããŸãã
ä»çµã¿ã¯ä»¥äžã®éãã§ãã
- ã¬ã€ã€ãŒã®å®çŸ©ïŒ`@layer`ã¢ããã«ãŒã«ã䜿çšããŠã¬ã€ã€ãŒãå®çŸ©ããŸããäŸïŒ
@layer reset, base, components, utilities;
- ã¹ã¿ã€ã«ãã¬ã€ã€ãŒã«å²ãåœãŠãïŒæ¬¡ã«ãCSSã«ãŒã«ãã¬ã€ã€ãŒå ã«é 眮ããŸããäŸïŒ
@layer reset {
/* Reset styles */
body {
margin: 0;
padding: 0;
}
}
@layer base {
/* Base styles */
body {
font-family: sans-serif;
font-size: 16px;
}
}
- ã¬ã€ã€ãŒå ã®ã«ã¹ã±ãŒãïŒåã¬ã€ã€ãŒå ã§ã¯ãæšæºã®CSSã«ã¹ã±ãŒãã«ãŒã«ïŒç¹ç°æ§ãåºçŸé åºïŒãåŒãç¶ãé©çšãããŸãã
- ã¬ã€ã€ãŒéã®ã«ã¹ã±ãŒãïŒã¬ã€ã€ãŒã¯ã`@layer`ã¹ããŒãã¡ã³ãã§å®£èšãããé åºã§åŠçãããŸããåŸã«å®£èšãããã¬ã€ã€ãŒã®ã¹ã¿ã€ã«ã¯ãå ã«å®£èšãããã¬ã€ã€ãŒã®ã¹ã¿ã€ã«ãäžæžãããŸãã
ãã®ã¬ã€ã€ãŒåãããã¢ãããŒãã«ã¯ãããã€ãã®å©ç¹ããããŸãã
- çµç¹åã®æ¹åïŒã¬ã€ã€ãŒã䜿çšãããšãCSSã«ãŒã«ãè«ççã«ã°ã«ãŒãåã§ããŸãïŒäŸïŒãªã»ããã¹ã¿ã€ã«ãããŒã¹ã¹ã¿ã€ã«ãã³ã³ããŒãã³ãã¹ã¿ã€ã«ããŠãŒãã£ãªãã£ã¹ã¿ã€ã«ïŒã
- ç¹ç°æ§ã®ç«¶åã®æžå°ïŒã¹ã¿ã€ã«ãã¬ã€ã€ãŒã«æŽçããããšã§ãã¹ã¿ã€ã«ãäžæžãããããã«é床ã«ç¹ç°ãªã»ã¬ã¯ã¿ãŒã䜿çšããå¿ èŠãæžããŸãã
- ä¿å®æ§ã®åäžïŒã¬ã€ã€ãŒå ã®å€æŽãã¢ããªã±ãŒã·ã§ã³ã®ä»ã®éšåã«åœ±é¿ãäžããå¯èœæ§ãäœããªããŸãã
- äºæž¬å¯èœæ§ã®åäžïŒã¬ã€ã€ãŒã®é åºä»ããããæ§è³ªã«ãããã¹ã¿ã€ã«ãã©ã®ããã«é©çšãããããäºæž¬ãããããªããŸãã
åçåªå 床ãšã©ã³ã¿ã€ã ã¬ã€ã€ãŒåé 眮ïŒé«åºŠãªãã¯ããã¯
åºæ¬çãª`@layer`æ©èœã ãã§ã匷åã§ãããçã®éæ³ã¯åçåªå 床ãšã©ã³ã¿ã€ã ã¬ã€ã€ãŒã®åé 眮ã«ãããŸãããããã®é«åºŠãªãã¯ããã¯ã䜿çšãããšãã¬ã€ã€ãŒã®é åºãšåªå 床ãåçã«å¶åŸ¡ã§ããã¹ã¿ã€ã«ã«å¯Ÿãããããªãæè»æ§ãšå¶åŸ¡ãæäŸããŸãã
åçã¬ã€ã€ãŒé åºå®£èš
`@layer`ã¹ããŒãã¡ã³ãã§ã¬ã€ã€ãŒã宣èšããé åºã«ãã£ãŠããã®ããã©ã«ãã®åªå åºŠãæ±ºãŸããŸãããã ããJavaScriptãCSSã«ã¹ã¿ã ããããã£ããŸãã¯ãã«ãããŒã«ã䜿çšããŠãã®é åºãåçã«å€æŽã§ããŸãããã®åçå¶åŸ¡ã¯ãå¹ åºãå¯èœæ§ãéããŸãã
äŸïŒCSSã«ã¹ã¿ã ããããã£ã®äœ¿çš
CSSã«ã¹ã¿ã ããããã£ïŒå€æ°ïŒã䜿çšããŠãã¬ã€ã€ãŒã®é åºãå¶åŸ¡ã§ããŸãããã®ã¢ãããŒãã¯ãããŒãèšå®ãç°ãªãã¬ã€ã¢ãŠãã®äœæã«ç¹ã«åœ¹ç«ã¡ãŸãã
:root {
--layer-order: 'reset base components utilities'; /* or any other arrangement */
}
@layer reset, base, components, utilities;
ãã®åŸãJavaScriptãŸãã¯ä»ã®ã¡ã«ããºã ã䜿çšããŠãã©ã³ã¿ã€ã æã«`--layer-order`ã«ã¹ã¿ã ããããã£ãæŽæ°ãã广çã«ã¬ã€ã€ãŒãåé 眮ã§ããŸãã
äŸïŒãŠãŒã¶ãŒèšå®ã«åºã¥ããã¬ã€ã€ãŒã®åé 眮ïŒããŒã¯ã¢ãŒãïŒïŒ
@layer reset, base, components, theme-light, theme-dark, utilities;
body.dark-mode {
--layer-order: 'reset base components theme-dark theme-light utilities';
}
body.light-mode {
--layer-order: 'reset base components theme-light theme-dark utilities';
}
ãã®ã¢ãããŒãã«ããã`--layer-order`ããããã£ã倿Žããã ãã§ãç°ãªãããŒããã¬ã€ã¢ãŠããç°¡åã«åãæ¿ããããšãã§ããŸããããã¯ãåçã§ã¬ã¹ãã³ã·ããªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãäœæããããã«éåžžã«è²Žéã§ãã
JavaScriptã«ããã©ã³ã¿ã€ã ã¬ã€ã€ãŒåé 眮
JavaScriptã¯ãã¬ã€ã€ãŒã®é åºãæãçŽæ¥çã«å¶åŸ¡ã§ããŸãã`